package main

import "fmt"

type Msg interface {
	Print()
}

type Message struct {
	msg string
}

func (m Message) Print() {
	fmt.Println("Message:", m.msg)
}

type Information struct {
	msg string
	level int
}

func (i Information) Print() {
	fmt.Println("Information:", i.level, i.msg)
}

func interfaceUse(m Msg) {
	m.Print()
}

func main() {
	message := Message{"Hello"}  // 定义一个结构体
	information := Information{"Hi", 2}  // 定义另外一个类型的结构体
	// 这里并不需要 var 接口，以及赋值
	interfaceUse(message)  // 参数不看类型了，而看你是否满足接口
	interfaceUse(information)  // 虽然这里的参数和上面不是同一个类型，但是这里对参数的要求是接口
}